﻿using System;
using System.ComponentModel;
using System.Windows;
using Dsl.Ped.Controls.ProjectiveControl;

namespace Dsl.Ped.Framework.AddIns
{
    /// <summary>
    /// The attributes of each AddIn must implement this interface
    /// </summary>
    public interface IDslPedAddInMetadata
    {
        /// <summary>
        /// Extension of the language
        /// </summary>
        string Extension { get; }

        /// <summary>
        /// Name of the extension
        /// </summary>
        string Name { get; }

        /// <summary>
        /// Projective type which represents the language
        /// </summary>
        Type ProjectiveType { get; }

        /// <summary>
        /// Uniqe XML namespace
        /// </summary>
        string Namespace { get; }

        /// <summary>
        /// Path to the Style file
        /// </summary>
        [DefaultValue(typeof(ResourceDictionary))]
        Type ResourceDictionary { get; }

        /// <summary>
        /// All available view modes 
        /// </summary>
        [DefaultValue(new ViewMode[] { ViewMode.Common, ViewMode.Extended })]
        ViewMode[] ViewModes { get; }

        /// <summary>
        /// Relative path to the file representing the addIn
        /// </summary>
        [DefaultValue("")]
        string ImageUri { get; }

        /// <summary>
        /// Description of the extension
        /// </summary>
        [DefaultValue("")]
        string Description { get; }
    }
}
